package com.lw.extraceim.loader.base;

import android.app.ProgressDialog;
import android.content.Context;
import android.os.Handler;

import androidx.annotation.NonNull;

import com.lw.extraceim.app.AppConstants;
import com.lw.extraceim.net.HttpResponseParam;
import com.lw.extraceim.net.callback.HttpResponseParamCallback;
import com.zhy.http.okhttp.OkHttpUtils;
import com.zhy.http.okhttp.builder.GetBuilder;
import com.zhy.http.okhttp.builder.PostFormBuilder;
import com.zhy.http.okhttp.builder.PostStringBuilder;
import com.zhy.http.okhttp.callback.Callback;

import java.io.File;
import java.util.Map;
import java.util.Objects;

import okhttp3.Call;
import okhttp3.MediaType;
/**
 * @Author : liwei
 * @Email : 1759840027@qq.com
 * @Description : 自定义的加载类
 * @Date : 2019/5/6 21:22
 */
public class BaseLoader {

//    protected Handler handler; //异步消息的处理
    protected Context context; //上下文

    public BaseLoader(Context context) {
//        this.handler = handler;
        this.context = context;
    }

    /**
     * @param url      上传的网址
     * @param method   上传的方法  AppConstants.POST 和  AppConstants.GET
     * @param form     上传的表单
     * @param callback 回调接口
     */
    public void execute(@NonNull String url, String method, Map<String, String> form, @NonNull Callback callback) {
        //post 方式提交表单时
        if (Objects.equals(method, AppConstants.POST)) {
            PostFormBuilder postFormBuilder = OkHttpUtils.post().url(url);
            if (form != null && !form.isEmpty()) {
                for (Map.Entry<String, String> entry : form.entrySet()) {
                    postFormBuilder.addParams(entry.getKey(), entry.getValue());
                }
            }
            postFormBuilder.build().execute(callback);
        } else {
            //get方式提交表单
            GetBuilder getBuilder = OkHttpUtils.get().url(url);
            if (form != null && !form.isEmpty()) {
                getBuilder.params(form);
            }
            getBuilder.build().execute(callback);
        }
    }


    /**
     * post方式上传json格式的字符串
     *
     * @param url      提交的网址
     * @param jonStr   提交的json字符串
     * @param callback 回调接口
     */
    public void execute(@NonNull String url, String jonStr, @NonNull Callback callback) {
        MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
        PostStringBuilder postStringBuilder = OkHttpUtils.postString().url(url);
        if (jonStr != null) {
            postStringBuilder.content(jonStr);
        }
        postStringBuilder.mediaType(mediaType).build().execute(callback);
    }

    /**
     * @param url       上传的网址
     * @param paramName 文件的属性名称
     * @param fileName  文件在后台存储时的名称
     * @param file      上传的文件
     * @param callback  回调接口
     */
    public void execute(String url, String paramName, String fileName, File file, Callback callback) {
        OkHttpUtils.post().url(url).addFile(paramName, fileName, file).build().execute(callback);
    }



}
